【iTop 四】 itop3.0 基于LDAP收集器进行AD域账号同步

您所在的位置:网站首页 ldap 同步 【iTop 四】 itop3.0 基于LDAP收集器进行AD域账号同步

【iTop 四】 itop3.0 基于LDAP收集器进行AD域账号同步

#【iTop 四】 itop3.0 基于LDAP收集器进行AD域账号同步| 来源: 网络整理| 查看: 265

itop3 基于LDAP收集器进行AD域账号同步

iTop专栏

[1]基于Centos7+Apache2.4+Mysql5.7+PHP7.3环境安装itop3

[2] itop 初始化配置

[3] itop 二次开发-修改Web UI

一、概述

itop支持使用AD域用户登录,目前同步AD用户有两种方法:

Data collector for LDAP 数据收集器(官方) AD_import_accounts.php 域同步脚本(民间大神)

通过对两种方法进行对比使用,虽然域同步脚本更加容易实现,但是从功能完整上来说,更加推荐LDAP数据收集器,故后续主要介绍官方提供的LDAP收集器使用方法。

此文档编写时,Data collector for LDAP最新版本为1.2.7,虽然官方文档还有一些小BUG,但笔者将实施步骤记录,帮助大家少走弯路。

建议:多看官方参考文档,了解主要思路,不要照抄文档配置,本文抛砖引玉,望举一反三

官方参考文档:Data collector for LDAP 文档

官网下载地址:Data collector for LDAP 安装包

阿里云下载地址:Data collector for LDAP 安装包

二、技术原理

image-20220303135129674

AD域同步分为两部分

person同步(联系人) User同步(账户)

image-20220303135421560

三、前期准备

1.php建议安装7.3以上,支持分页功能需要7.3以上

2.同步账户需要REST角色(以admin为同步账户介绍)

image-20220303140344411

3.收集器不要放置在Web目录,防止可以从外部访问配置文件,例如放置在/opt/itop/ldap-data-collector下

四、配置文件介绍

ldap-data-collector文件如下

image-20220304100623031

下载好收集器ldap-data-collector,需要编辑的文件如下

/opt/itop/ldap-data-collector/collectors/params.distrib.xml /opt/itop/ldap-data-collector/conf/params.distrib.xml /opt/itop/ldap-data-collector/conf/params.local.xml

其中conf/params.local.xml由conf/params.distrib.xml复制得到,当配置参数相同时,params.local.xml优先级高于params.distrib.xml

#解压ldap收集器 mkdir /opt/itop/ && cd /opt/itop/ unzip Data-collector-for-LDAP.zip #复制配置文件 cd ldap-data-collector/conf cp params.distrib.xml params.local.xml 五、配置单AD域同步 1.编辑配置文件conf/params.local.xml

vim conf/params.local.xml

http://localhost/ admin adminpassword [email protected] admin ldap://localhost:389 DC=company,DC=com company\user password 1000 604800 UserLDAP production

注意:这里有官方文档的BUG

ldap://localhost:389 company\user

以上配置文件的含义,请参考官方文档解释

参数 含义 举例 itop_url itop登录地址 http://localhost/ itop_login 拥有REST角色、创建联系人权限的账号 admin itop_password password contact_to_notify 当同步错误时,通知联系人 synchro_user 拥有REST角色的用户,和itop_login保持一致即可 admin ldapuri LDAP 服务器地址 ldap://localhost:389 ldapdn LDAP 公司DN,如果同步某个OU,则加上OU=xx,即可 ldaplogin 连接到LDAP 服务器用户 company\user ldappassword password page_size 同步分页的大小 1000 prefix 每个LDAP服务器的标签,同步多LDAP服务器才会用到 full_load_interval 当账号已不存在LDAP中,账号保留时间 604800 users_target_class 同步用户类,UserLDAP 或者 UserExternal UserLDAP synchro_status 同步状态 production 2.编辑配置文件collectors/params.distrib.xml

vim collectors/params.distrib.xml

ldap://localhost:389 DC=company,DC=com company\user PASSWORD (objectClass=person) /^CN=itop-(.*),OU=.*/ samaccountname givenname sn mail telephonenumber mobile title employeenumber Demo active no (;(objectClass=person)(samaccountname=*)) no samaccountname samaccountname mail Portal user ZH CN $prefix$ synchro_data_$prefix$ldap_persons UserLDAP synchro_data_$prefix$ldap_users 604800 production write_if_empty

注意:此份配置文档非常重要,主要是映射联系人、用户和LDAP字段的映射关系,并且将联系人与用户相关联。

例如,下面更改了中文姓名的顺序。

givenname sn 3.测试iTop REST API连接

php toolkit/testconnection.php

成功后会提示如下界面,如果未出现,请检查以上配置文件

image-20220303163718523

常见错误:

如果未给同步用户(admin),赋予REST Services User角色,则会提示以下错误

image-20220304132824940

4.测试LDAP 同步用户

php collectors/bin/ldap-test.php

能返回如下信息则配置成功

image-20220304084153353

常见错误:

未使用这种格式 dgqy\80310,会提示如下错误

image-20220304083915411

5.测试LDAP收集功能

php exec.php --console_log_level=9 --collect_only

image-20220304132842238

6.测试正常,运行同步命令

php exec.php

image-20220304132854606

登录联系人页面查看

image-20220304133558564

image-20220304084710665

注意:同步后的联系人无法修改

image-20220304084830951

需要手动修改,可以点击配置-同步数据源-属性修改,将加锁修改为解锁就能修改了。但是每次同步后会重新加锁,如果需要一直解锁,需要修改收集器内的策略json文件iTopPersonLDAPCollector.json和iTopUserLDAPCollector.json,这里不做介绍

image-20220304085014617

7.配置定时同步任务

以上完成同步后,需要使用crontab配置定时任务

编写同步脚本

vim /opt/itop/cron/ldap-data-collector-cron.sh

#!/bin/bash # 用于ldap数据收集执行脚本 echo "开始进行LDAP数据同步" php /opt/itop/ldap-data-collector/exec.php --config_file='/opt/itop/ldap-data-collector/conf/params.local.xml' >> /opt/itop/cron/params.local.xml.log 2>&1 echo "LDAP同步完成"

创建定时任务

crontab -e

#每天12点30 , 23点30进行LDAP同步 30 12,23 * * * /bin/bash /opt/itop/cron/ldap-data-collector-cron.sh

验证定时状态

image-20220304085839358

六、(进阶)多域多OU AD账户同步

​ 上文介绍了单个域环境单个OU的用户同步到iTop某个组织中(指定组织),如果需要一个或多个域环境,多个OU的用户分配同步到iTop的不同组织中,则需要对每一个对应关系编写一份配置文件,并且使用参数进行区分

以下以一个域内qy和yls两个OU分别同步到iTop不同组织内为例

1.在conf下创建每个OU对应的xml文件

将params.local.xml修改为带后缀的文件

image-20220304132946491

vim params.local.qy.xml

OU=对应的组织名,DC=dgqy,DC=com qy %APPROOT%/data-qy iTop组织名-qy active

vim params.local.yls.xml

OU=对应的组织名,DC=dgqy,DC=com yls %APPROOT%/data-yls iTop组织名-yls active

以上简化配置文件,是为了为了避免itop和网址被多次指定,并将params.local.xml文件内的公共部分添加到conf/params.distrib.xml和collectors/params.distrib.xml

其他配置参数参考步骤五中配置文件

vim conf/params.distrib.xml

image-20220304112401160

vim collectors/params.distrib.xml

image-20220304134115615

2.执行每个收集器,查看是否成功(同上) php exec.php --config_file='conf/params.local.qy.xml' php exec.php --config_file='conf/params.local.yls.xml' 3.配置定时同步任务

以上完成同步后,均为手动执行同步,需要自动同步,需要使用crontab

编写同步脚本

vim /opt/itop/cron/ldap-data-collector-cron.sh

#!/bin/bash # 用于ldap数据收集执行脚本 echo "开始进行LDAP数据同步" php /opt/itop/ldap-data-collector/exec.php --config_file='/opt/itop/ldap-data-collector/conf/params.local.qy.xml' >> /opt/itop/cron/params.local.qy.xml.log 2>&1 php /opt/itop/ldap-data-collector/exec.php --config_file='/opt/itop/ldap-data-collector/conf/params.local.yls.xml' >> /opt/itop/cron/params.local.yls.xml.log 2>&1 echo "LDAP同步完成"

创建定时任务

crontab -e

#每天12点30 , 23点30进行LDAP同步 30 12,23 * * * /bin/bash /opt/itop/cron/ldap-data-collector-cron.sh

查看同步数据源

image-20220304091051577

七、开启LDAP登录

打开web页面,编辑配置文件

image-20220304135500528

找到如下配置项,

'authent-ldap' => array ( 'host' => '192.168.0.42', 'port' => 389, 'default_user' => '[email protected]', 'default_pwd' => '123456', 'base_dn' => 'dc=dgqy,dc=com', 'user_query' => '(&(samaccountname=%1$s))', 'options' => array ( 17 => 3, 8 => 0, ),

保存后,同步的LDAP用户就可以登录了

八、(可选)其他问题

​ 以上同步AD的前提都是基于AD域中存在mail,如果企业内部未配置邮箱,则同步时会发生问题,这里介绍如何将联系人与账号关联从mail-mail更改为登录名-员工编号相关联

image-20220304091738112

image-20220304091932685

1.修改配置文件collectors/iTopUserLDAPCollector.json

vim collectors/iTopUserLDAPCollector.json

将contactid 改为 employee_number,为将账户关联联系人中的员工编号,如果两者相等,则自动关联

image-20220304134351488

2.修改配置文件vim collectors/params.distrib.xml

vim collectors/params.distrib.xml

将mail改为samaccountname 登录账号

no (;(objectClass=person)(samaccountname=*)) yes samaccountname samaccountname samaccountname

image-20220304134424064

更改完,后续参考第五步,完成同步即可



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3